<?php
/**
 *  User：LRZ
 *  Date：2020/1/29
 *  Time：15:49
 */

/**
 *  1299.将每个元素替换为右侧最大元素
 *
 *  标签：数组
 *
 *  给你一个数组 arr ，请你将每个元素用它右边最大的元素替换，如果是最后一个元素，用 -1 替换。
 *  完成所有替换操作后，请你返回这个数组。
 *
 *  示例：
 *      输入：arr = [17,18,5,4,6,1]
 *      输出：[18,6,6,6,1,-1]
 *   
 *  提示：
 *      1 <= arr.length <= 10^4
 *      1 <= arr[i] <= 10^5
 *
 *  来源：力扣（LeetCode）
 *  链接：https://leetcode-cn.com/problems/replace-elements-with-greatest-element-on-right-side
 *  著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */

$start = microtime(true);

$arr = [17, 18, 5, 4, 6, 1];
$res = replaceElements($arr);

$end = microtime(true);
print_r($res);
printf(' total run: %.2f s<br>' . 'memory usage: %.2f M<br> ', $end - $start, memory_get_usage() / 1024 / 1024);

function replaceElements($arr)
{
    $max  = -1;
    $size = count($arr);

    for ($i = $size - 1; $i >= 0; $i--) {
        $temp     = $arr[$i];
        $arr[$i] = $max;
        if ($temp > $max) {
            $max = $temp;
        }
    }

    return $arr;
}